home *** CD-ROM | disk | FTP | other *** search
- /*
- File: Vol.c
-
- Contains: A dcmd which dumps all volumes from the VCB queue.
-
- Written by: JM3 = Jim Murphy
- DAL = Dave Lyons
- sad = Scott Douglas
-
- Copyright: © 1988,1993-1994, 1996 by Apple Computer, Inc., all rights reserved.
-
- Change History (most recent first):
-
- <6> 25-Jan-96 JM3 Updated the sample build commands to be current. Took out lowmem
- define and included LowMem.h.
- <5> 11-Dec-94 JM3 Updated for new version 3 dcmd requirements.
- <4> 24-Jan-94 JM3 EqualString is now in TextUtils.h with the Universal Interfaces.
- <2> 9/10/93 DAL Fixed volume-name matching to work again (was using
- non-prototyped "EQUALSTRING" instead of EqualString). Widened
- the volume-name column. Changed "VCB at" to "VCB addr" and made
- it align for 32-bit addresses.
-
- Modification history:
- 29Nov88 sad revised for new dcmd names. display more info.
- 5Oct88 sad written.
-
- The following MPW commands will build the dcmd and copy it to the "Debugger Prefs" file
- in the System folder. The dcmd's name in MacsBug will be the name of the file built by
- the Linker.
-
- SC EnergyStar.c
- Link -o EnergyStar -sg Main=STDCLIB,STDIO,SANELIB dcmdGlue.a.o EnergyStar.c.o "{Libraries}Runtime.o"
- BuildDcmd EnergyStar 198 -format3
- Echo 'include "EnergyStar";' | Rez -a -o "{systemFolder}Debugger Prefs"
-
- */
-
- #include <Types.h>
- #include <Memory.h>
- #include <OSUtils.h>
- #include <Files.h>
- #include <TextUtils.h>
- #include <Devices.h>
- #include <Video.h>
- #include <LowMem.h>
-
- #include "dcmd.h"
- #include "put.h"
-
- //==============================================================================
- #define kESSignature 'HAL '
- #define kEnergyStarOn kDPMSSyncOn // See Video.h
- #define kEnergyStarSuspend kDPMSSyncSuspend // See video.h
- #define kEnergyStarOff kDPMSSyncOff // See Video.h
-
- typedef struct {
- char code1; // kEnergyStarOn or kEnergyStarOff
- char code2; // kEnergyStarOn or kEnergyStarOff
- long type; // 0L in status call, kESSignature in control calls
- } ESData;
-
- //==============================================================================
- Boolean EnergyStarSupported(GDHandle device)
- {
- CntrlParam param;
- ESData data;
-
- data.code1 = 0x00;
- data.code2 = 0x00;
- data.type = 0x00000000;
- param.ioCompletion = 0L;
- param.ioCRefNum = (**device).gdRefNum;
- param.csCode = 11;
- *(ESData**)¶m.csParam[0] = &data;
-
- // return (PBStatusSync((ParmBlkPtr)¶m) == noErr);
- return (PBStatus((ParmBlkPtr)¶m, false) == noErr);
- }
-
- //==============================================================================
- short EnergyStarState(GDHandle device)
- {
- CntrlParam param;
- ESData data;
- OSErr err;
- long startTicks;
-
- startTicks = LMGetTicks();
-
- do
- {
- data.code1 = 0x00;
- data.code2 = 0x00;
- data.type = 0x00000000;
- param.ioCompletion = 0L;
- param.ioCRefNum = (**device).gdRefNum;
- param.csCode = 11;
- *(ESData**)¶m.csParam[0] = &data;
-
- // } while((err = PBStatusSync((ParmBlkPtr)¶m)) != noErr &&
- } while((err = PBStatus((ParmBlkPtr)¶m, false)) != noErr &&
- LMGetTicks() - startTicks < 300);
-
- if(err)
- return kEnergyStarOff;
- else
- return data.code1;
- }
-
- //==============================================================================
- OSErr SwitchEnergyStar(GDHandle device, short state)
- {
- CntrlParam param;
- ESData data;
- OSErr err;
- short oldState, mask;
- long startTicks;
-
- if((oldState = EnergyStarState(device)) == 0x7)
- mask = kDPMSSyncMask;
- else
- mask = state;
-
- startTicks = LMGetTicks();
-
- do
- {
- data.code1 = state;
- data.code2 = mask;
- data.type = kESSignature;
- param.ioCompletion = 0L;
- param.ioCRefNum = (**device).gdRefNum;
- param.csCode = 11;
- *(ESData**)¶m.csParam[0] = &data;
-
- } while((err = PBControlSync((ParmBlkPtr)¶m)) != noErr &&
- LMGetTicks() - startTicks < 300);
-
- return err;
- }
-
- //==============================================================================
- pascal void CommandEntry(dcmdBlock* paramPtr)
- {
-
- static const char usageStr[] = "\p[on | off]";
- #include "Picture.h"
-
- switch (paramPtr->request)
- {
- case dcmdInit:
- break;
-
- case dcmdHelp:
- dcmdDrawLine("\pTurns on a monitor that Energy Saver has powered down.");
- dcmdDrawLine("\p(Obviously, you'll have to type this command blind if you need it :-)");
- break;
-
- case dcmdGetInfo:
- * (long *) &((GetInfoRequestBlockPtr) paramPtr->requestIOBlock)->dcmdVersion = 0x01008000; // version 1.0 final
- BlockMoveData(&usageStr, &((GetInfoRequestBlockPtr) paramPtr->requestIOBlock)->usageStr, usageStr[0]+1);
- break;
-
- case dcmdDoIt:
- {
- GDHandle device;
- Str255 command;
- short ii;
-
- (void) dcmdGetNextParameter(command);
-
- if((device = GetMainDevice()) != NULL && EnergyStarSupported(device))
- if(command[0] > 1 && (command[2] == 'f' || command[2] == 'F'))
- SwitchEnergyStar(device, kEnergyStarSuspend);
- else
- SwitchEnergyStar(device, kEnergyStarOn);
- for(ii = 0; ii < NUM_LINES; ii++)
- {
- dcmdDrawLine(starts[ii]);
- dcmdDrawString(ends[ii]);
- }
- break;
- }
-
- // Version 3 and newer dcmds must quietly ignore requests we don't recognize.
-
- default:
- break;
- }
-
- } // CommandEntry
-